﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ContaTelefone.Data;
using ContaTelefone.Entities;

namespace ContaTelefone.Process
{
    using ContaTelefone.Data;
    using ContaTelefone.Entities;

    public class ContaLigacaoProcess
    {
        CONTA_LIGACAORepository objRepository = new CONTA_LIGACAORepository();

        public void Incluir(ContaLigacaoEntities objEtt)
        {
            CONTA_LIGACAO obj = new CONTA_LIGACAO();
            obj.ID_CONTA = objEtt.ID_CONTA;
            obj.ID = objEtt.ID;
            obj.NumNF = objEtt.NumNF;
            obj.NumIDCli = objEtt.NumIDCli;
            obj.MesRef = objEtt.MesRef;
            obj.NumAcs = objEtt.NumAcs;
            obj.Plano = objEtt.Plano;
            obj.Nome = objEtt.Nome;
            obj.Tpserv = objEtt.Tpserv;
            obj.Data = objEtt.Data;
            obj.Origem = objEtt.Origem;
            obj.Destino = objEtt.Destino;
            obj.NumCham = objEtt.NumCham;
            obj.Tipo = objEtt.Tipo;
            obj.Duracao = objEtt.Duracao;
            obj.Valor = objEtt.Valor;
            obj.OperLD = objEtt.OperLD;
            obj.TIMID = objEtt.TIMID;
            obj.Alíquota = objEtt.Alíquota;
            obj.CodFEBRABAN = objEtt.CodFEBRABAN;
            obj.TotalGeral = objEtt.TotalGeral;

            objRepository.Add(obj);
        }

        public void IncluirADODb(ContaLigacaoEntities objEtt)
        {
            CONTA_LIGACAO obj = new CONTA_LIGACAO();
            obj.ID_CONTA = objEtt.ID_CONTA;
            obj.ID = objEtt.ID;
            obj.NumNF = objEtt.NumNF;
            obj.NumIDCli = objEtt.NumIDCli;
            obj.MesRef = objEtt.MesRef;
            obj.NumAcs = objEtt.NumAcs;
            obj.Plano = objEtt.Plano;
            obj.Nome = objEtt.Nome;
            obj.Tpserv = objEtt.Tpserv;
            obj.Data = objEtt.Data;
            obj.Origem = objEtt.Origem;
            obj.Destino = objEtt.Destino;
            obj.NumCham = objEtt.NumCham;
            obj.Tipo = objEtt.Tipo;
            obj.Duracao = objEtt.Duracao;
            obj.Valor = objEtt.Valor;
            obj.OperLD = objEtt.OperLD;
            obj.TIMID = objEtt.TIMID;
            obj.Alíquota = objEtt.Alíquota;
            obj.CodFEBRABAN = objEtt.CodFEBRABAN;
            obj.TotalGeral = objEtt.TotalGeral;

            objRepository.AddADODb(obj);
        }

        public void IncluirSemSalvar(ContaLigacaoEntities objEtt)
        {
            CONTA_LIGACAO obj = new CONTA_LIGACAO();
            obj.ID_CONTA = objEtt.ID_CONTA;
            obj.ID = objEtt.ID;
            obj.NumNF = objEtt.NumNF;
            obj.NumIDCli = objEtt.NumIDCli;
            obj.MesRef = objEtt.MesRef;
            obj.NumAcs = objEtt.NumAcs;
            obj.Plano = objEtt.Plano;
            obj.Nome = objEtt.Nome;
            obj.Tpserv = objEtt.Tpserv;
            obj.Data = objEtt.Data;
            obj.Origem = objEtt.Origem;
            obj.Destino = objEtt.Destino;
            obj.NumCham = objEtt.NumCham;
            obj.Tipo = objEtt.Tipo;
            obj.Duracao = objEtt.Duracao;
            obj.Valor = objEtt.Valor;
            obj.OperLD = objEtt.OperLD;
            obj.TIMID = objEtt.TIMID;
            obj.Alíquota = objEtt.Alíquota;
            obj.CodFEBRABAN = objEtt.CodFEBRABAN;
            obj.TotalGeral = objEtt.TotalGeral;

            objRepository.AddSemSalvar(obj);
        }
        public void SalvarAlteracoes()
        {
            objRepository.Update();
        }

        public void RefreshEntity()
        {
            objRepository.RefreshEntity();
        }

        public void Alterar(ContaLigacaoEntities objEtt)
        {
            CONTA_LIGACAO obj = objRepository.getCONTA_LIGACAO(objEtt.ID_CONTA, objEtt.ID);
            if (obj != null)
            {
                obj.ID_CONTA = objEtt.ID_CONTA;
                obj.ID = objEtt.ID;
                obj.NumNF = objEtt.NumNF;
                obj.NumIDCli = objEtt.NumIDCli;
                obj.MesRef = objEtt.MesRef;
                obj.NumAcs = objEtt.NumAcs;
                obj.Plano = objEtt.Plano;
                obj.Nome = objEtt.Nome;
                obj.Tpserv = objEtt.Tpserv;
                obj.Data = objEtt.Data;
                obj.Origem = objEtt.Origem;
                obj.Destino = objEtt.Destino;
                obj.NumCham = objEtt.NumCham;
                obj.Tipo = objEtt.Tipo;
                obj.Duracao = objEtt.Duracao;
                obj.Valor = objEtt.Valor;
                obj.OperLD = objEtt.OperLD;
                obj.TIMID = objEtt.TIMID;
                obj.Alíquota = objEtt.Alíquota;
                obj.CodFEBRABAN = objEtt.CodFEBRABAN;
                obj.TotalGeral = objEtt.TotalGeral;

                objRepository.Update();
            }
        }

        public void Delete(ContaLigacaoEntities objEtt)
        {
            CONTA_LIGACAO obj = objRepository.getCONTA_LIGACAO(objEtt.ID_CONTA, objEtt.ID);
            if (obj != null)
                objRepository.Delete(obj);
        }

        public ContaLigacaoEntities getobj(int ID_CONTA, long ID)
        {
            CONTA_LIGACAO obj = objRepository.getCONTA_LIGACAO(ID_CONTA, ID);
            if (obj != null)
            {
                ContaLigacaoEntities objEtt = new ContaLigacaoEntities();
                objEtt.ID_CONTA = obj.ID_CONTA;
                objEtt.ID = obj.ID;
                objEtt.NumNF = obj.NumNF;
                objEtt.NumIDCli = obj.NumIDCli;
                objEtt.MesRef = obj.MesRef;
                objEtt.NumAcs = obj.NumAcs;
                objEtt.Plano = obj.Plano;
                objEtt.Nome = obj.Nome;
                objEtt.Tpserv = obj.Tpserv;
                objEtt.Data = obj.Data.Value;
                objEtt.Origem = obj.Origem;
                objEtt.Destino = obj.Destino;
                objEtt.NumCham = obj.NumCham;
                objEtt.Tipo = obj.Tipo;
                objEtt.Duracao = obj.Duracao;
                objEtt.Valor = obj.Valor.Value;
                objEtt.OperLD = obj.OperLD;
                objEtt.TIMID = obj.TIMID;
                objEtt.Alíquota = obj.Alíquota;
                objEtt.CodFEBRABAN = obj.CodFEBRABAN;
                objEtt.TotalGeral = obj.TotalGeral.Value;

                return objEtt;
            }
            else
                return null;
        }

        public List<ContaLigacaoEntities> Listar()
        {
            List<ContaLigacaoEntities> lista = new List<ContaLigacaoEntities>();

            foreach (CONTA_LIGACAO obj in objRepository.GetCONTA_LIGACAOs())
            {
                lista.Add(getobj(obj.ID_CONTA, obj.ID));
            }

            return lista;
        }
    }
}
